<template>
    <!-- 问题： 我们不知道什么时候能够拿到 max 值，但是，总归有一刻，会得到一个真正的 max 值 -->
    <!-- 我们可以 使用 watch 属性监听，来 监听 父组件传递过来的 max 值，不管 watch 会被触发几次，但是，最后一次，肯定是一个 合法的 max 数值 -->
    <div class="mui-numbox" data-numbox-min='1'>
        <button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
        <label for="test"><input id="test" class="mui-input-numbox" type="number" value="1" @change="countChanged"
                                 ref="numbox"/></label>
        <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
    </div>

    <!-- 分析： 子组件什么时候把 数据传递给父组件 -->
    <!--  -->
</template>

<script>
    import mui from "../../lib/mui/js/mui.min.js";
    import {Toast} from 'mint-ui';

    export default {
        mounted() {
            // 初始化数字选择框组件
            console.log(this.max);
            mui(".mui-numbox")
                .numbox()
                .setOption("max", this.max);
        },
        methods: {
            countChanged() {
                // 每当 文本框的数据被修改的时候，立即把 最新的数据，通过事件调用，传递给父组件
                // console.log(this.$refs.numbox.value);
                let value = this.$refs.numbox.value;
                if (isNaN(parseInt(value))) {
                    Toast("输入非法!");
                    this.$refs.numbox.value = 1;
                }
                if (parseInt(value) >= this.max) {
                    this.$refs.numbox.value = 60;
                } else if (parseInt(value) <= 1) {
                    this.$refs.numbox.value = 1;
                }
                this.$emit("getcount", parseInt(this.$refs.numbox.value));
            }
        },
        props: ["max"],
        watch: {
            // 属性监听
            max: function (newVal, oldVal) {
                // 使用 JS API 设置 numbox 的最大值
                mui(".mui-numbox")
                    .numbox()
                    .setOption("max", newVal);
                // console.log(newVal + "---" + oldVal);
            }
        }
    };
</script>

<style lang="scss" scoped>

</style>
